package com.supermarket.mapper;

import com.supermarket.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper {
    // 插入用户
    int insertUser(User user);

    // 根据用户名查询用户
    User selectUserByUsername(@Param("username") String username);

    // 更新用户信息
    int updateUser(User user);

    // 删除用户
    int deleteUser(@Param("username") String username);

    // 查询所有用户
    List<User> selectAllUsers();

    /**
     * 分页查询所有用户
     *
     * @param username 用户名（可选）
     * @param nickname 昵称（可选）
     * @param email    邮箱（可选）
     * @return 用户列表
     */
    List<User> selectAllUsersWithPagination(@Param("username") String username, @Param("nickname") String nickname, @Param("email") String email);

    // 根据id查询用户
    User selectUserById(Integer id);

    // 根据用户属性查询用户
    List<User> selectByUser(User user);

    /**
     * 查询用户总数
     * @return 用户总数
     */
    int countUsers();
}